// 父类
class Person {
    name: string
    age: number

    constructor(name: string, age:number){
        this.name = name
        this.age = age
    }

    getName(){
        console.log(`name是:${this.name}`)
        return this.name
    }

    setName(name: string){
        console.log(`设置name为:${name}`)
        this.name = name
    }
    sayName(){
        console.log(`哈哈哈,我是${this.name}`)
    }
}

// 子类
class Child extends Person {
    tel: number
    // 如果在子类中写了构造函数，就必须调用父类的构造函数
    constructor(name: string, age: number, tel:number){
        super(name, age)  // super用在子类中，表示当前的父类
        this.tel = tel
    }
    // 子类也可以自己定义一些方法
    getTel(){
        return this.tel
    }
    sayName(){
        // 类的方法中super就表示父类,可以通过super.（父类的方法）调用父类的方法
        super.sayName()
        console.log("Child")
    }
}

let res = new Child("pengyuyan", 18 , 133123456789)
res.setName('pengyuyan') // 设置name为：pengyuyan
console.log(res) // Child {."name": "pengyuyan", "age": 18, "tel": 133123456789 }
console.log(res.age) // 18
console.log(res.getTel()) // 133123456789
res.sayName()
res.getName()
